package com.meetflow.conference.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.meetflow.common.annotation.Excel;
import com.meetflow.common.core.domain.BaseEntity;

import java.util.Arrays;
import java.util.Date;
import java.util.List;

/**
 * 我的申请对象 meet_record
 *
 * @author duanjj
 * @date 2024-07-12
 */
public class MeetRecord extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    private Long id;

    /**
     * 流水号
     */
    private String serialNumber;

    /**
     * 标题
     */
    private String recordTitle;

    /**
     * 记录类型：1产品相关；2非产品相关
     */
    private String recordType;

    /**
     * 申请人编号
     */
//    @Excel(name = "申请人编号")
    private Long applicantUserId;

    /**
     * 申请人姓名
     */
    @Excel(name = "申请人姓名")
    private String applicantUserName;
    @Excel(name = "填写人姓名")
    private String userName;

    /**
     * 申请人部门编码
     */
//    @Excel(name = "申请人部门编码")
    private Long applicantDetpCode;

    /**
     * 申请人部门名称
     */
    @Excel(name = "申请人部门名称")
    private String applicantDeptName;

    /**
     * 审批人编号
     */
//    @Excel(name = "审批人编号")
    private Long approverUserId;

    /**
     * 审批人姓名
     */
    @Excel(name = "审批人姓名")
    private String approverUserName;

    /**
     * 审批人部门编码
     */
//    @Excel(name = "审批人部门编码")
    private Long approverDetpCode;

    /**
     * 审批人部门名称
     */
    @Excel(name = "审批人部门名称")
    private String approverDeptName;


    /**
     * 问题层级
     */
    @Excel(name = "问题层级",dictType = "user_level_options")
    private String problemLevel;

    /**
     * 申请时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "申请时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date applicantTime;


    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
//    @Excel(name = "自动升级时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date autoUpgradationTime;

    /**
     * 申请类别
     */
    @Excel(name = "申请类别")
    private String productCategory;

    /**
     * 订单号
     */
    @Excel(name = "订单号")
    private String orderNo;

    /**
     * 生产批号
     */
    @Excel(name = "生产批号")
    private String produceBathNo;

    /**
     * 物料号
     */
    @Excel(name = "物料号")
    private String materialNo;

    /**
     * 问题描述
     */
    @Excel(name = "问题描述")
    private String problemRemark;

    /**
     * 流程状态 1:申请 2：sim1 3:sim2 4:sim3 5:sim4
     */
    @Excel(name = "流程状态", dictType = "user_level_options")
    private String taskStatus;

    /**
     * 影响KPI
     */
    @Excel(name = "影响KPI",dictType = "impact_kpi")
    private String kpiName;

    /**
     * 处理部门编号
     */
//    @Excel(name = "处理部门编号")
    private Long handingDeptCode;

    /**
     * 处理部门名称
     */
    @Excel(name = "处理部门名称")
    private String handingDeptName;

    /**
     * 责任人编号
     */
//    @Excel(name = "责任人编号")
    private Long personLiableNo;

    /**
     * 责任人姓名
     */
    @Excel(name = "责任人姓名")
    private String personLiableName;

    /**
     * 问题类型
     */
    @Excel(name = "问题类型", dictType = "problem_type")
    private String problemType;

    /**
     * 计划完成日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "计划完成日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date planFinishTime;

    /**
     * 生产启动日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "生产启动日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date productionStartDate;

    /**
     * 合同交货日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "合同交货日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date contractDeliveryDate;

    /**
     * 实际完成日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "实际完成日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date actualFinishTime;

    /**
     * 状态 1：开始 2：结束 3：停止
     */
    @Excel(name = "状态",readConverterExp="1=进行中,2=已完成,3=已撤回,4=未开始")
    private String checkStatus;

    /**
     * 是否升级
     */
    @Excel(name = "是否升级")
    private String autoUpgradation;

    /**
     * 自动升级日期。 (注：根据流程状态和时间流转时间进行自动升级判断 )
     */
    @Excel(name = "自动升级日期。 (注：根据流程状态和时间流转时间进行自动升级判断 )")
    private Long upgradationDay;

    /**
     * 计划交货时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "计划交货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date plannedDeliveryTime;


    private String meetAction;

    private int[] approversNos;

    private String nodeUserNos;
    //当前流程记录节点主键ID
    private String flowIds;

    private String userLevel;

    private String operationStatus;

    // 0：全部，1:待办，2：已办
    private String listType;

    private List<MeetFlowAction> flowList;

    private Integer meetStatus;


    /**
     * 审批人1编码
     */
//    @Excel(name = "审批人1编码")
    private Long meetSimFirstCode;

    /**
     * 审批人1姓名
     */
//    @Excel(name = "审批人1姓名")
    private String meetSimFirstName;


    /**
     * 审批人SIM1操作记录备注
     */
//    @Excel(name = "审批人SIM1操作记录备注")
    private String meetSimFirstNote;


    @Excel(name = "上传文件")
    private String fileUrl;

    private String problemStartDate;

    private String problemEndDate;

    /**
     * 班组code
     */
    private Long workgroupDeptCode;
    /**
     * 班组名称
     */
    private String workgroupDeptName;

    @Excel(name = "紧急度")
    private String urgency;

    public String getUrgency() {
        return urgency;
    }

    public void setUrgency(String urgency) {
        this.urgency = urgency;
    }

    public Long getWorkgroupDeptCode() {
        return workgroupDeptCode;
    }

    public void setWorkgroupDeptCode(Long workgroupDeptCode) {
        this.workgroupDeptCode = workgroupDeptCode;
    }

    public String getWorkgroupDeptName() {
        return workgroupDeptName;
    }

    public void setWorkgroupDeptName(String workgroupDeptName) {
        this.workgroupDeptName = workgroupDeptName;
    }

    public Integer getMeetStatus() {
        return meetStatus;
    }

    public void setMeetStatus(Integer meetStatus) {
        this.meetStatus = meetStatus;
    }

    public String getRecordType() {
        return recordType;
    }

    public void setRecordType(String recordType) {
        this.recordType = recordType;
    }

    public String getSerialNumber() {
        return serialNumber;
    }

    public void setSerialNumber(String serialNumber) {
        this.serialNumber = serialNumber;
    }

    public String getRecordTitle() {
        return recordTitle;
    }

    public void setRecordTitle(String recordTitle) {
        this.recordTitle = recordTitle;
    }

    public String getListType() {
        return listType;
    }

    public void setListType(String listType) {
        this.listType = listType;
    }

    public Long getApproverUserId() {
        return approverUserId;
    }

    public void setApproverUserId(Long approverUserId) {
        this.approverUserId = approverUserId;
    }

    public String getApproverUserName() {
        return approverUserName;
    }

    public void setApproverUserName(String approverUserName) {
        this.approverUserName = approverUserName;
    }

    public Long getApproverDetpCode() {
        return approverDetpCode;
    }

    public void setApproverDetpCode(Long approverDetpCode) {
        this.approverDetpCode = approverDetpCode;
    }

    public String getApproverDeptName() {
        return approverDeptName;
    }

    public void setApproverDeptName(String approverDeptName) {
        this.approverDeptName = approverDeptName;
    }

    public String getOperationStatus() {
        return operationStatus;
    }

    public void setOperationStatus(String operationStatus) {
        this.operationStatus = operationStatus;
    }

    public String getUserLevel() {
        return userLevel;
    }

    public void setUserLevel(String userLevel) {
        this.userLevel = userLevel;
    }

    public List<MeetFlowAction> getFlowList() {
        return flowList;
    }

    public void setFlowList(List<MeetFlowAction> flowList) {
        this.flowList = flowList;
    }

    public String getFlowIds() {
        return flowIds;
    }

    public void setFlowIds(String flowIds) {
        this.flowIds = flowIds;
    }

    public String getNodeUserNos() {
        return nodeUserNos;
    }

    public void setNodeUserNos(String nodeUserNos) {
        this.nodeUserNos = nodeUserNos;
    }

    public String getFileUrl() {
        return fileUrl;
    }

    public void setFileUrl(String fileUrl) {
        this.fileUrl = fileUrl;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setApplicantUserId(Long applicantUserId) {
        this.applicantUserId = applicantUserId;
    }

    public Long getApplicantUserId() {
        return applicantUserId;
    }

    public void setApplicantUserName(String applicantUserName) {
        this.applicantUserName = applicantUserName;
    }

    public String getApplicantUserName() {
        return applicantUserName;
    }

    public void setApplicantDetpCode(Long applicantDetpCode) {
        this.applicantDetpCode = applicantDetpCode;
    }

    public Long getApplicantDetpCode() {
        return applicantDetpCode;
    }

    public void setApplicantDeptName(String applicantDeptName) {
        this.applicantDeptName = applicantDeptName;
    }

    public String getApplicantDeptName() {
        return applicantDeptName;
    }

    public void setProblemLevel(String problemLevel) {
        this.problemLevel = problemLevel;
    }

    public String getProblemLevel() {
        return problemLevel;
    }

    public void setApplicantTime(Date applicantTime) {
        this.applicantTime = applicantTime;
    }

    public Date getApplicantTime() {
        return applicantTime;
    }

    public void setProductCategory(String productCategory) {
        this.productCategory = productCategory;
    }

    public String getProductCategory() {
        return productCategory;
    }

    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    public String getOrderNo() {
        return orderNo;
    }

    public void setProduceBathNo(String produceBathNo) {
        this.produceBathNo = produceBathNo;
    }

    public String getProduceBathNo() {
        return produceBathNo;
    }

    public void setMaterialNo(String materialNo) {
        this.materialNo = materialNo;
    }

    public String getMaterialNo() {
        return materialNo;
    }

    public void setProblemRemark(String problemRemark) {
        this.problemRemark = problemRemark;
    }

    public String getProblemRemark() {
        return problemRemark;
    }

    public void setTaskStatus(String taskStatus) {
        this.taskStatus = taskStatus;
    }

    public String getTaskStatus() {
        return taskStatus;
    }

    public void setKpiName(String kpiName) {
        this.kpiName = kpiName;
    }

    public String getKpiName() {
        return kpiName;
    }

    public void setHandingDeptCode(Long handingDeptCode) {
        this.handingDeptCode = handingDeptCode;
    }

    public Long getHandingDeptCode() {
        return handingDeptCode;
    }

    public void setHandingDeptName(String handingDeptName) {
        this.handingDeptName = handingDeptName;
    }

    public String getHandingDeptName() {
        return handingDeptName;
    }

    public void setPersonLiableNo(Long personLiableNo) {
        this.personLiableNo = personLiableNo;
    }

    public Long getPersonLiableNo() {
        return personLiableNo;
    }

    public void setPersonLiableName(String personLiableName) {
        this.personLiableName = personLiableName;
    }

    public String getPersonLiableName() {
        return personLiableName;
    }

    public void setProblemType(String problemType) {
        this.problemType = problemType;
    }

    public String getProblemType() {
        return problemType;
    }

    public void setPlanFinishTime(Date planFinishTime) {
        this.planFinishTime = planFinishTime;
    }

    public Date getPlanFinishTime() {
        return planFinishTime;
    }

    public void setActualFinishTime(Date actualFinishTime) {
        this.actualFinishTime = actualFinishTime;
    }

    public Date getActualFinishTime() {
        return actualFinishTime;
    }

    public void setCheckStatus(String checkStatus) {
        this.checkStatus = checkStatus;
    }

    public String getCheckStatus() {
        return checkStatus;
    }

    public void setAutoUpgradation(String autoUpgradation) {
        this.autoUpgradation = autoUpgradation;
    }

    public String getAutoUpgradation() {
        return autoUpgradation;
    }

    public void setUpgradationDay(Long upgradationDay) {
        this.upgradationDay = upgradationDay;
    }

    public Long getUpgradationDay() {
        return upgradationDay;
    }

    public void setPlannedDeliveryTime(Date plannedDeliveryTime) {
        this.plannedDeliveryTime = plannedDeliveryTime;
    }

    public Date getPlannedDeliveryTime() {
        return plannedDeliveryTime;
    }

    public void setMeetSimFirstCode(Long meetSimFirstCode) {
        this.meetSimFirstCode = meetSimFirstCode;
    }

    public Long getMeetSimFirstCode() {
        return meetSimFirstCode;
    }

    public void setMeetSimFirstName(String meetSimFirstName) {
        this.meetSimFirstName = meetSimFirstName;
    }

    public String getMeetSimFirstName() {
        return meetSimFirstName;
    }


    public void setMeetSimFirstNote(String meetSimFirstNote) {
        this.meetSimFirstNote = meetSimFirstNote;
    }

    public String getMeetSimFirstNote() {
        return meetSimFirstNote;
    }


    public int[] getApproversNos() {
        return approversNos;
    }

    public void setApproversNos(int[] approversNos) {
        this.approversNos = approversNos;
    }

    public Date getAutoUpgradationTime() {
        return autoUpgradationTime;
    }

    public void setAutoUpgradationTime(Date autoUpgradationTime) {
        this.autoUpgradationTime = autoUpgradationTime;
    }

    public String getProblemStartDate() {
        return problemStartDate;
    }

    public void setProblemStartDate(String problemStartDate) {
        this.problemStartDate = problemStartDate;
    }

    public String getProblemEndDate() {
        return problemEndDate;
    }

    public void setProblemEndDate(String problemEndDate) {
        this.problemEndDate = problemEndDate;
    }

    public String getMeetAction() {
        return meetAction;
    }

    public void setMeetAction(String meetAction) {
        this.meetAction = meetAction;
    }

    public Date getProductionStartDate() {
        return productionStartDate;
    }

    public void setProductionStartDate(Date productionStartDate) {
        this.productionStartDate = productionStartDate;
    }

    public Date getContractDeliveryDate() {
        return contractDeliveryDate;
    }

    public void setContractDeliveryDate(Date contractDeliveryDate) {
        this.contractDeliveryDate = contractDeliveryDate;
    }

    @Override
    public String toString() {
        return "MeetRecord{" +
                "id=" + id +
                ", serialNumber='" + serialNumber + '\'' +
                ", recordTitle='" + recordTitle + '\'' +
                ", recordType='" + recordType + '\'' +
                ", applicantUserId=" + applicantUserId +
                ", applicantUserName='" + applicantUserName + '\'' +
                ", userName='" + userName + '\'' +
                ", applicantDetpCode=" + applicantDetpCode +
                ", applicantDeptName='" + applicantDeptName + '\'' +
                ", approverUserId=" + approverUserId +
                ", approverUserName='" + approverUserName + '\'' +
                ", approverDetpCode=" + approverDetpCode +
                ", approverDeptName='" + approverDeptName + '\'' +
                ", problemLevel='" + problemLevel + '\'' +
                ", applicantTime=" + applicantTime +
                ", autoUpgradationTime=" + autoUpgradationTime +
                ", productCategory='" + productCategory + '\'' +
                ", orderNo='" + orderNo + '\'' +
                ", produceBathNo='" + produceBathNo + '\'' +
                ", materialNo='" + materialNo + '\'' +
                ", problemRemark='" + problemRemark + '\'' +
                ", taskStatus='" + taskStatus + '\'' +
                ", kpiName='" + kpiName + '\'' +
                ", handingDeptCode=" + handingDeptCode +
                ", handingDeptName='" + handingDeptName + '\'' +
                ", personLiableNo=" + personLiableNo +
                ", personLiableName='" + personLiableName + '\'' +
                ", problemType='" + problemType + '\'' +
                ", planFinishTime=" + planFinishTime +
                ", productionStartDate=" + productionStartDate +
                ", contractDeliveryDate=" + contractDeliveryDate +
                ", actualFinishTime=" + actualFinishTime +
                ", checkStatus='" + checkStatus + '\'' +
                ", autoUpgradation='" + autoUpgradation + '\'' +
                ", upgradationDay=" + upgradationDay +
                ", plannedDeliveryTime=" + plannedDeliveryTime +
                ", meetAction='" + meetAction + '\'' +
                ", approversNos=" + Arrays.toString(approversNos) +
                ", nodeUserNos='" + nodeUserNos + '\'' +
                ", flowIds='" + flowIds + '\'' +
                ", userLevel='" + userLevel + '\'' +
                ", operationStatus='" + operationStatus + '\'' +
                ", listType='" + listType + '\'' +
                ", flowList=" + flowList +
                ", meetStatus=" + meetStatus +
                ", meetSimFirstCode=" + meetSimFirstCode +
                ", meetSimFirstName='" + meetSimFirstName + '\'' +
                ", meetSimFirstNote='" + meetSimFirstNote + '\'' +
                ", fileUrl='" + fileUrl + '\'' +
                ", problemStartDate='" + problemStartDate + '\'' +
                ", problemEndDate='" + problemEndDate + '\'' +
                ", workgroupDeptCode=" + workgroupDeptCode +
                ", workgroupDeptName='" + workgroupDeptName + '\'' +
                ", urgency='" + urgency + '\'' +
                '}';
    }
}
